<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //ES6之前函数定义的方式
        // function show(x,y){
        //     console.log(x);
        //     console.log(y);
        // }
        // show("alice","baby");
        // show();
        // //早期函数形式默认值的定义方式
        // function f1(x,y){
        //     // if(!x){
        //     //    x=0;
        //     // }
        //     // if(!y){
        //     //    y=0;
        //     // }
        //     x=x||0;
        //     y=y||0;
        //     var sum=x+y;
        //     console.log(sum);
        // }
        // f1(1,NaN);
        // f1(undefined,2);
        // f1("",12);
        // f1(20,40);
        // f1();


        // // ES6中提供函数定义时形参的默认值赋值语法,形参名=默认值
        // function f2(x,y="嘿嘿"){
        //     console.log(x);
        //     console.log(y);
        // }
        // f2(1);
        // console.log("==============");
        // //ES6形参默认函数可以赋值函数调用
        // function getNum(){
        //     return Math.random();
        // }
        // function f3(a=getNum()){
        //     console.log(a);
        // }
        // f3(100);
        // f3();

        // 函数默认值和形参解构默认值
            // 1.函数形参默认值，只有在该函数调用且未传入参数时获取
            // 2.形参解构后的对应属性的默认值，必须在解构表达式中进行定义
        var user1={
            username:"tom",
            age:23
        };
        var user2={
            username:"tom"
        };

        // function show2({username,age}={age:100}){
        //     console.log(username);
        //     console.log(age);
        // }

        function show2({username,age=98}={}){
            console.log(username);
            console.log(age);
        }
        // show2(user1);
        // show2();
        show2(user2);
       
        //let {aaa,bbb}=undefined;//无法解构
    </script>
</head>
<body>
    
</body>
</html>